package cn.yinyu.queue.module.ecg.controller.admin.queue.vo;

import cn.yinyu.queue.module.ecg.dal.dataobject.patient.PatDetails;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;


@Schema(description = "管理后台 - 排队新增/修改 Request VO")
@Data
public class QueueSaveReqVO {

    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21320")
    private Integer id;

    @Schema(description = "预约申请号", example = "2024435")
    private String applyNo;

    @Schema(description = "就诊流水号", example = "2024435")
    private String episodeId;

    @Schema(description = "内部预约编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21320")
    private Long appointId;

    @Schema(description = "患者编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "30473")
    @NotEmpty(message = "患者编号不能为空")
    private String patId;

    @Schema(description = "患者姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "嘉木")
    @NotEmpty(message = "患者姓名不能为空")
    private String patName;

    @Schema(description = "患者性别")
    private Byte patGender;

    @Schema(description = "患者详情")
    private PatDetails patDetails;

    @Schema(description = "预约日期", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "预约日期不能为空")
    private LocalDate bookDate;

    @Schema(description = "预约时间段", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "预约时间段不能为空")
    private Integer bookTimeslot;

    @Schema(description = "预约检查类型", example = "1")
    private Integer bookCheckType;

    @Schema(description = "预约序号", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotNull(message = "预约序号不能为空")
    private Integer bookSeqNum;

    @Schema(description = "是否VIP", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotNull(message = "是否VIP")
    private Integer isVip;

    @Schema(description = "排队序号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "排队序号不能为空")
    private Integer seqNum;

    @Schema(description = "5:过号 10:排队中 15:已召回 20:候诊准备 30:就诊中 40:就诊完成 ", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "5:过号 10:排队中 15:已召回 20:候诊准备 30:就诊中 40:就诊完成 不能为空")
    private Integer status;

    @Schema(description = "过号标记", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "过号标记不能为空")
    private Byte passed;

    @Schema(description = "预约过期标记", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "预约过期标记不能为空")
    private Byte expired;

    private Integer affinityItem;

    @Schema(description = "诊室编号")
    private Long roomId;

    @Schema(description = "诊室名称")
    private String roomName;

    @Schema(description = "诊疗床编号")
    private String bedNo;
}

